home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / PROGMISC / PCSSP.LZH / PC-SSP.ZIP / STATDATA.ZIP / TALLY.FOR < prev   
Text File  |  1985-12-27  |  3KB  |  94 lines

  1. C        CALL TALLY(A,S,TOTAL,AVER,SD,VMIN,VMAX,NO,NV,IER)
  2. C
  3. C     DESCRIPTION OF PARAMETERS
  4. C        A      - OBSERVATION MATRIX, NO BY NV
  5. C        S      - INPUT VECTOR INDICATING SUBSET OF A. ONLY THOSE
  6. C            OBSERVATIONS WITH A NON-ZERO S(J) ARE CONSIDERED.
  7. C            VECTOR LENGTH IS NO.
  8. C        TOTAL - OUTPUT VECTOR OF TOTALS OF EACH VARIABLE. VECTOR
  9. C            LENGTH IS NV.
  10. C        AVER  - OUTPUT VECTOR OF AVERAGES OF EACH VARIABLE. VECTOR
  11. C            LENGTH IS NV.
  12. C        SD      - OUTPUT VECTOR OF STANDARD DEVIATIONS OF EACH
  13. C            VARIABLE. VECTOR LENGTH IS NV.
  14. C        VMIN  - OUTPUT VECTOR OF MINIMA OF EACH VARIABLE. VECTOR
  15. C            LENGTH IS NV.
  16. C        VMAX  - OUTPUT VECTOR OF MAXIMA OF EACH VARIABLE. VECTOR
  17. C            LENGTH IS NV.
  18. C        NO      - NUMBER OF OBSERVATIONS
  19. C        NV      - NUMBER OF VARIABLES FOR EACH OBSERVATION
  20. C        IER   - ZERO, IF NO ERROR.
  21. C          - 1, IF S IS NULL.  VMIN=-1.E75, VMAX=SD=AVER=1.E75.
  22. C          - 2, IF S HAS ONLY ONE NON-ZERO ELEMENT. VMIN=VMAX.
  23. C            SD=0.0
  24. C
  25. C     REMARKS
  26. C        NONE
  27. C
  28. C     SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  29. C        NONE
  30. C
  31. C     METHOD
  32. C        ALL OBSERVATIONS CORRESPONDING TO A NON-ZERO ELEMENT IN S
  33. C        VECTOR ARE ANALYZED FOR EACH VARIABLE IN MATRIX A.
  34. C        TOTALS ARE ACCUMULATED AND MINIMUM AND MAXIMUM VALUES ARE
  35. C        FOUND. FOLLOWING THIS, MEANS AND STANDARD DEVIATIONS ARE
  36. C        CALCULATED.  THE DIVISOR FOR STANDARD DEVIATION IS ONE LESS
  37. C        THAN THE NUMBER OF OBSERVATIONS USED.
  38. C
  39. C     ..................................................................
  40. C
  41.       SUBROUTINE TALLY(A,S,TOTAL,AVER,SD,VMIN,VMAX,NO,NV)
  42.       DIMENSION A(1),S(1),TOTAL(1),AVER(1),SD(1),VMIN(1),VMAX(1)
  43. C
  44. C     CLEAR OUTPUT VECTORS AND INITIALIZE VMIN,VMAX
  45. C
  46.       IER=0
  47.       DO 1 K=1,NV
  48.       TOTAL(K)=0.0
  49.       AVER(K)=1.0E38
  50.       SD(K)=1.0E38
  51.       VMIN(K)=-1.0E38
  52.     1 VMAX(K)=1.0E38
  53. C
  54. C        TEST SUBSET VECTOR
  55. C
  56.       SCNT=0.0
  57.       DO 7 J=1,NO
  58.       IJ=J-NO
  59.       IF(S(J)) 2,7,2
  60.     2 SCNT=SCNT+1.0
  61. C
  62. C        CALCULATE TOTAL, MINIMA, MAXIMA
  63. C
  64.       DO 6 I=1,NV
  65.       IJ=IJ+NO
  66.       TOTAL(I)=TOTAL(I)+A(IJ)
  67.       IF(A(IJ)-VMIN(I)) 3,4,4
  68.     3 VMIN(I)=A(IJ)
  69.     4 IF(A(IJ)-VMAX(I)) 6,6,5
  70.     5 VMAX(I)=A(IJ)
  71.     6 SD(I)=SD(I)+A(IJ)*A(IJ)
  72.     7 CONTINUE
  73. C
  74. C        CALCULATE MEANS AND STANDARD DEVIATIONS
  75. C
  76.       IF (SCNT)8,8,9
  77.     8 IER=1
  78.       GO TO 15
  79.     9 DO 10 I=1,NV
  80.    10 AVER(I)=TOTAL(I)/SCNT
  81.       IF (SCNT-1.0) 13,11,13
  82.    11 IER=2
  83.       DO 12 I=1,NV
  84.    12 SD(I)=0.0
  85.       GO TO 15
  86.    13 DO 14 I=1,NV
  87.    14 SD(I)=SQRT(ABS((SD(I)-TOTAL(I)*TOTAL(I)/SCNT)/(SCNT-1.0)))
  88.    15 RETURN
  89.       END
  90.  IER=1
  91.       GO TO 15
  92.     9 DO 10 I=1,NV
  93.    10 AVER(I)=TOTAL(I)/SCNT
  94.